diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index 39577ca..4032557 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -51,7 +51,7 @@
 	var $_trans_failure	= FALSE; // Used with transactions to determine if a rollback should occur
 	var $cache_on		= FALSE;
 	var $cachedir		= '';
-	var $cache; // The cache class object
+	var $CACHE; // The cache class object
 
 
 	// These are use with Oracle
@@ -234,7 +234,7 @@
 		{
 			if ($this->_cache_init())
 			{
-				if (FALSE !== ($cache = $this->cache->read($sql)))
+				if (FALSE !== ($cache = $this->CACHE->read($sql)))
 				{
 					return $cache;
 				}
@@ -287,10 +287,9 @@
 		{
 			// If caching is enabled we'll auto-cleanup any
 			// existing files related to this particular URI
-			
 			if ($this->cache_on == TRUE AND $this->_cache_init())
 			{
-				$this->cache->delete();
+				$this->CACHE->delete();
 			}
 		
 			return TRUE;
@@ -305,26 +304,35 @@
 		}
 	
 		// Load and instantiate the result driver	
-
-		$driver = $this->load_rdriver();
 		
-		$RES = new $driver();
+		$driver 		= $this->load_rdriver();
+		$RES 			= new $driver();
 		$RES->conn_id	= $this->conn_id;
-		$RES->db_debug	= $this->db_debug;
 		$RES->result_id	= $this->result_id;
 		
 		if ($this->dbdriver == 'oci8')
 		{
-			$RES->stmt_id   = $this->stmt_id;
-			$RES->curs_id   = NULL;
-			$RES->limit_used = $this->limit_used;
+			$RES->stmt_id		= $this->stmt_id;
+			$RES->curs_id		= NULL;
+			$RES->limit_used	= $this->limit_used;
 		}
 		
 		// Is query caching enabled?  If so, we'll serialize the 
-		// result object and save it to a cache file
+		// result object and save it to a cache file.
 		if ($this->cache_on == TRUE AND $this->_cache_init())
-		{				
-			$this->cache->write($sql, $RES);
+		{
+			// We'll create a new instance of the result object
+			// only without the platform specific driver since
+			// we can't use it with cached data (the query result
+			// resource ID won't be any good once we've cached the
+			// result object, so we'll have to compile the data
+			// and save it)
+			$CR = new CI_DB_result();
+			$CR->num_rows 		= $RES->num_rows();
+			$CR->result_object	= $RES->result_object();
+			$CR->result_array	= $RES->result_array();
+
+			$this->CACHE->write($sql, $CR);
 		}
 		
 		return $RES;
@@ -887,7 +895,7 @@
 	 */		
 	function cache_on()
 	{
-		return $this->query_caching = TRUE;
+		return $this->cache_on = TRUE;
 	}
 
 	// --------------------------------------------------------------------
@@ -900,7 +908,7 @@
 	 */	
 	function cache_off()
 	{
-		return $this->query_caching = FALSE;
+		return $this->cache_on = FALSE;
 	}
 	
 	// --------------------------------------------------------------------
@@ -927,7 +935,7 @@
 	 */	
 	function _cache_init()
 	{
-		if (is_object($this->cache) AND class_exists('CI_DB_Cache'))
+		if (is_object($this->CACHE) AND class_exists('CI_DB_Cache'))
 		{
 			return TRUE;
 		}
@@ -937,7 +945,7 @@
 			return $this->cache_off();
 		}
 		
-		$this->cache = new CI_DB_Cache;
+		$this->CACHE = new CI_DB_Cache;
 		return TRUE;
 	}
 
